//package cn.jingyinghui.service.impl;
//
//import io.qdrant.client.QdrantClient;
//import io.qdrant.client.grpc.Collections.Distance;
//import io.qdrant.client.grpc.Collections.VectorParams;
//import io.qdrant.client.grpc.Points.*;
//import org.springframework.stereotype.Service;
//import java.util.List;
//import java.util.concurrent.ExecutionException;
//
//@Service
//public class QdrantService {
//
//    private static final String COLLECTION_NAME = "demo_collection";
//    private static final List<Float> FIXED_VECTOR = List.of(0.1f, 0.2f, 0.3f); // 固定向量
//    private static final long POINT_ID = 1L; // 固定点ID
//
//    private final QdrantClient client;
//
//    public QdrantService(QdrantClient client) {
//        this.client = client;
//    }
//
//    // 创建集合
//    public void createCollection() throws ExecutionException, InterruptedException {
//
//        client.createCollectionAsync(COLLECTION_NAME,
//                VectorParams.newBuilder()
//                        .setSize(FIXED_VECTOR.size()) // 向量维度
//                        .setDistance(Distance.Cosine) // 相似度算法
//                        .build()
//        ).get();
//    }
//
//    // 插入固定向量
//    public void insertVector() throws ExecutionException, InterruptedException {
//        PointStruct point = PointStruct.newBuilder()
//                .setId(PointId.newBuilder().setNum(POINT_ID).build())
//                .setVectors(Vectors.newBuilder().setVector(
//                        Vector.newBuilder().addAllData(FIXED_VECTOR).build()
//                ))
//                .build();
//
//        client.upsertAsync(COLLECTION_NAME, List.of(point)).get();
//    }
//
//    // 查询相似向量
//  /*  public List<ScoredPoint> searchSimilar() throws ExecutionException, InterruptedException {
//        SearchResponse response = client.searchAsync(COLLECTION_NAME,
//                SearchPoint.newBuilder()
//                        .setVector(Vector.newBuilder().addAllData(FIXED_VECTOR).build())
//                        .setLimit(1) // 返回1个最相似结果
//                        .build()
//        ).get();
//
//        return response.getResultList();
//    }*/
//
//
//    // 查询相似向量
//  /*  public List<ScoredPoint> searchSimilar() throws ExecutionException, InterruptedException {
//        SearchResponse response = client.searchAsync(
//                SearchPoints.newBuilder()
//                        .setCollectionName(COLLECTION_NAME) // 设置集合名称
//                        .setVector(FIXED_VECTOR.stream().map(Float::floatValue).toArray(Float[]::new)) // 将 List<Float> 转换为 Float[]
//                        .setLimit(1) // 返回1个最相似结果
//                        .build(),
//                null // 超时时间，可以设置为 null 或具体的 Duration
//        ).get();
//
//        return response.getResultList();
//    }*/
//}